package com.web.kdl.pojo.Vo;

import com.web.kdl.enums.ExportTaskStatus;
import lombok.Data;

/**
 * 导出任务信息
 */
@Data
public class ExportTaskVO {
    private String taskId;
    private ExportTaskStatus status;
    private String message;
    private String filePath;
    private String fileName;
    private Integer totalRows;
    private Long startTime;
    private Long endTime;
    private Long duration;

    public static ExportTaskVO pending(String taskId) {
        ExportTaskVO vo = new ExportTaskVO();
        vo.setTaskId(taskId);
        vo.setStatus(ExportTaskStatus.PENDING);
        vo.setMessage("任务已提交，等待处理");
        vo.setStartTime(System.currentTimeMillis());
        return vo;
    }

    public static ExportTaskVO processing(String taskId) {
        ExportTaskVO vo = new ExportTaskVO();
        vo.setTaskId(taskId);
        vo.setStatus(ExportTaskStatus.PROCESSING);
        vo.setMessage("正在生成文件...");
        return vo;
    }

    public static ExportTaskVO success(String taskId, String filePath, String fileName, Integer totalRows, Long startTime) {
        ExportTaskVO vo = new ExportTaskVO();
        vo.setTaskId(taskId);
        vo.setStatus(ExportTaskStatus.SUCCESS);
        vo.setMessage("文件生成成功");
        vo.setFilePath(filePath);
        vo.setFileName(fileName);
        vo.setTotalRows(totalRows);
        vo.setStartTime(startTime);
        vo.setEndTime(System.currentTimeMillis());
        vo.setDuration(vo.getEndTime() - startTime);
        return vo;
    }

    public static ExportTaskVO failed(String taskId, String errorMsg, Long startTime) {
        ExportTaskVO vo = new ExportTaskVO();
        vo.setTaskId(taskId);
        vo.setStatus(ExportTaskStatus.FAILED);
        vo.setMessage("文件生成失败：" + errorMsg);
        vo.setStartTime(startTime);
        vo.setEndTime(System.currentTimeMillis());
        vo.setDuration(vo.getEndTime() - startTime);
        return vo;
    }
}
